perm filename MACRO.LSP[E80,JMC] blob
sn#533500 filedate 1980-09-01 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 for testing macro facilities also defines if macro
C00004 ENDMK
Cā;
;;; for testing macro facilities; also defines if macro
(defun if macro (l)(cons 'cond (ifxxx1 (cdr l))))
(defun ifxxx1 (u) (cond ((null (cdr u)) (list (list t (car u))))
(t (cons (list (car u) (cadr u)) (ifxxx1 (cddr u))))))
;;; macdef as described in 1980 version McC and Talcott
(DEFUN MACDEF MACRO (L)
(LIST 'DEFUN
(CAADR L)
'MACRO
'(%L)
(LIST 'SUBLIS
(LIST 'PRUP (LIST 'QUOTE (CDADR L)) (LIST 'CDR '%L) )
(LIST 'QUOTE (CADDR L))) ))
(DEFUN PRUP (U V) (IF (NULL U) NIL (CONS (CONS (CAR U) (CAR V)) (PRUP
(CDR U) (CDR V)))))
(macrodef iff (p a b) (cond (p a) (t b)))
(defun alt (u) (iff
(or (null u) (null (cdr u)))
u
(cons (car u) (alt (cddr u)))
))
(macrodef (rf x f) (f x))